using System.Collections; using System.Collections.Generic; using UnityEngine; public class RangedSlimeLife : MonoBehaviour { private PlayerLevel playerLevel; private PlayerGold playerGold; private GameObject player; public GameObject RangedSlimeLifeBar; public GameObject RangedSlimeLifeText; public int life = 50; public int rangeSlimeMaxLife = 50; public bool dead; public bool flashActive; [SerializeField] public float flashLength = 0f; [SerializeField] public float flashCounter = 0f; private SpriteRenderer rangedSlimeSprite; public void Start() { player = GameObject.FindGameObjectWithTag("Player"); playerLevel = FindObjectOfType<PlayerLevel>(); // to access the Player Level file playerGold = FindObjectOfType<PlayerGold>(); // to access the Player Gold rangedSlimeSprite = GetComponent<SpriteRenderer>(); dead = false; } public void Update() { Vector3 rangedSlime = new Vector3(transform.position.x, transform.position.y, transform.position.z); // to calculate the distance Vector3 Ppos = new Vector3(player.transform.position.x, player.transform.position.y, transform.position.z); // to calculate the distance if (life < 0) // to make sure that the enemy doesn't have the life under 0 { life = 0; } if (life == 0) // to destroy the enemy if life is 0 { Destroy(gameObject); dead = true; Destroy(RangedSlimeLifeBar); Destroy(RangedSlimeLifeText); if (dead == true) { playerLevel.exp += 110; dead = false; playerGold.gold += 100; Debug.Log(dead); } } if (life > rangeSlimeMaxLife) // to make sure that the enemy doesn't have more life than the max life { life = rangeSlimeMaxLife; } if (Vector3.Distance(rangedSlime, Ppos) > 14.2f) // enemy regenrate life once the player is away { life = rangeSlimeMaxLife; } if (flashActive) { if (flashCounter > flashLength * .99f) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f); } else if (flashCounter > flashLength * .82f) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f); } else if (flashCounter > flashLength * .66f) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f); } else if (flashCounter > flashLength * .49) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f); } else if (flashCounter > flashLength * .33) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f); } else if (flashCounter > flashLength * .16f) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f); } else if (flashCounter > 0f) { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 0f); } else { rangedSlimeSprite.color = new Color(rangedSlimeSprite.color.r, rangedSlimeSprite.color.g, rangedSlimeSprite.color.b, 1f); flashActive = false; } flashCounter -= Time.deltaTime; } } }